//封装axios 数据请求

//01.将axios 从 node_modules中导入
import axios from 'axios'

//02.创建一个axios实例
//  instance  就是 axios
//instance 其实相当于改装过的axios

const instance = axios.create({
  //基础请求地址
  baseURL: 'https://reactapi.iynn.cn',
  //请求延时时间
  timeout: 5000,
  //请求头的提交格式
  headers: { 'Content-Type': 'application/json' },
})

//单独配置的形式
// axios.defaults.baseURL = 'https://some-domain.com/api/'
// axios.defaults.timeout = 5000
// axios.defaults.headers.post['Content-Type'] = 'application/json'


//03. 添加请求拦截器
instance.interceptors.request.use(function (config) {

  //在使用axios请求数据前，此时请求还没有发送给后端，被拦截器拦下
  //可以在该位置做一个请求的配置，最常用的就是在该位置添加token
  //为什么要使用token 因为http 请求时无状态的， 两个请求之间没有任何关联， 所以需要使用token
  //上一次请求时， 返回token 作为下一次请求的校验
  if (localStorage.getItem('token')) {
    //登录后才会有token
    config.headers.Authorization = localStorage.getItem('token')
  }

  return config
},
  function (error) {

    //对请求错误做些什么
    return Promise.reject(error)
  })

//04. 添加响应拦截器
instance.interceptors.response.use(function (response) {

  //当响应发给前端前，被响应拦截器拦截，该位置一般可以用来

  //01. 根据后端返回的状态码， 来对所有的响应做一个处理， 比如 提示
  //02. 更新token 用来做登录的时长校验
  console.log('response', response);

  console.log(response.data.message);
  return response
},
  function (error) {

    //对响应错误做些什么
    return Promise.reject(error)
  })

//05. 导出 instance
export default instance